SnowflakeにPythonコネクタで接続してみる
SnowflakeにPythonコネクタで接続してみる
今データ業界で最もホットなプロダクトの一つといえば Snowflake が挙げられるでしょう。
ということで今回はSnowflakeにPythonを使用して接続してみます。
はじめに
Snowflakeにはさまざまなドライバが用意されており、ニーズに合わせた接続方法を選べるようになっています。
今回はその中でもデータ処理の面で使われることが多いであろうPython用のコネクタを使用して、簡単なSQLを実行する方法を説明します。
やってみる
Pythonコネクタのインストール
Python用のコネクタが必要なのでpipでインストールします。
pip install snowflake-connector-python
>>> import snowflake.connector
>>> print(snowflake.connector.__version__)
3.12.4
PythonからSnowflakeに接続する
PythonからSnowflakeに接続するには snowflake.connector.connect()
メソッドを使用します。
import snowflake.connector
con = snowflake.connector.connect(
account='XXXX',
user='XXXX',
password='XXXX',
)
必須のパラメータは
- account
- user
- password
です。
account
の設定はいくつか方法があります。
詳しくは ドキュメント を見ていただくのが良いと思いますが、公式で推奨されているのは <組織名>-<アカウント名>
の形式です。
例えば SnowOrg
という組織の SnowAccount
というアカウントの場合、パラメータの指定は account="SnowOrg-SnowAccount"
となります。
SQLを実行する
PythonからはInsert文を流してみて、その結果をコンソール画面から確認してみたいと思います。
まずはコンソールを開いて、 KITAGAWA_TEST_DB.PUBLIC.TEST_TABLE
というテーブルを次のSQLで作成します。
CREATE OR REPLACE TABLE KITAGAWA_TEST_DB.PUBLIC.TEST_TABLE (
id smallint,
name string,
age int
);
次はこのテーブルへのInsert文を、Pythonから投げてみます。
なおここでは追加のパラメータとして warehouse
, database
, schema
を指定しています。
import os
import snowflake.connector
from dotenv import load_dotenv
load_dotenv()
USER = os.getenv("USER")
PASSWORD = os.getenv("PASSWORD")
ACCOUNT = os.getenv("ACCOUNT")
def main():
con = snowflake.connector.connect(
user=USER,
password=PASSWORD,
account=ACCOUNT,
warehouse="X_SMALL_WH",
database="KITAGAWA_TEST_DB",
schema="PUBLIC",
)
sql_statement = """
INSERT INTO test_table VALUES
(1, 'Snowman1', 1),
(2, 'Snowman2', 4),
(3, 'Snowman3', 9)
;
"""
con.cursor().execute(sql_statement)
if __name__ == "__main__":
main()
ではこのスクリプトを実行してみます。
Insert文が正常に実行されているかどうか、コンソール画面から確かめてみましょう。
成功しましたね!
想定通りデータの挿入が行われていることが確認できます。
最後に
今回はPython用コネクタを用いて、Snowflakeで簡単なSQLを実行する方法を解説してみました。
SnowflakeはPython Database API v2仕様(PEP-249)に準拠しており、よく使われているDBと同じような感覚でPythonから接続できるように設計されています。
次はもっと踏み込んだところについての解説も行っていきたいと考えていますので、どうぞお付き合いください。
この記事が誰かのお役に立てると幸いです。